const http = require("http");
const fs = require("fs");
const url = require("url");

http.createServer(function(req,res){   // 别忘了写 req 和 res
	
	// url模块拿到前台页面地址栏反馈的信息  ?name 之前
	let path = url.parse(req.url).pathname;
	
	// 如果地址栏只是 127.0.0.1:48662 就返回一个页面
	if(path == "/"){
		
		fs.readFile("../html/index.html",function(err,data){        // 路径： ../html/index.html  上一级目录下的html文件夹里的index.html文件
			
			res.write(data);
			res.end();
			
		})
		
	}
	
	// 做数据添加到json部分 还是先判断pathname是什么值
	if(path == "/zhu"){
		
		// 先打开当前目录下 userlist.json 这个文件
		fs.readFile("./userlist.json",function(err,data){
			
			// 获取到url模块中query中的值 并转成对象
			let query = url.parse(req.url,true).query;
			
			// 获取json文件里的内容并转成对象
			jsonDom = JSON.parse(data);
			
			// 将之前获取到的query添加到数组 userlist 中
			jsonDom.userlist.push(query);
			
			// 将数据转变成字符串格式
			jsonData = JSON.stringify(jsonDom);
			
			fs.writeFile("./userlist.json",jsonData,function(err){     // 写到这实在不行了看了眼讲师的 中间 还有个 参数 ctmd .
				
				if(err){
					res.end("err");
				}else{
					res.end("ok");
				}
				
			})
			
		})
		
	}
	
	// 验证用户名是否存在
	if(path == "/yan"){
		
		// 获取url模块里的query 里的name值
		let name = url.parse(req.url,true).query.name;
		
		// 文件模块打开userlist.json这个文件
		fs.readFile("./userlist.json",function(err,data){
			
			// json文件内容转换成对象
			jsonDom = JSON.parse(data);
			
			// 用some这个语法验证json里面的内容有没有和name值一样的
			yz = jsonDom.userlist.some(function(item){
				
				return item.name == name;     // item后面加上.name  刚刚发现有点问题看了眼 发现后面少了个.name 
				
			})
			
			// 判断 yz  some语法返回的布尔值
			if(yz==true){
				
				res.write("no");
				res.end();
				
			}else{
				
				res.write("ok");
				res.end();
				
			}
			
		})
		
	}
	
}).listen(48662,function(){         // 我建议写回调函数  平常习惯用HBuilder node 插件  Application 用 cmd感觉麻烦
	console.log("server start");
})
